<?php
namespace Mouta\AmistateBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Mouta\AmistateBundle\utils\Strings;
use Mouta\AmistateBundle\Entity\UsuarioRepository;

class UsuarioAdmin extends Admin{
    
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
        ->with('Datos Obligatorios')
            ->add('verificado', null, array('required' => false))
            ->add('borrado', null, array('required' => false))
            ->add('id', null, array('required' => false,'read_only' => true))
            ->add('nombre', null, array('required' => true))
            ->add('email', null, array('required' => true,'read_only' => true))
            ->add('sexo', 'choice', array('required' => true,'choices'   => UsuarioRepository::getOpcionesSexo() ))
            ->add('descripcion', 'textarea', array('required' => true))
            ->add('pais','ubicacion',array('label'=>'Ubicación:','required' => true))
            ->add('provincia','hidden')
            ->add('ciudad','hidden')
            ->add('latitude','hidden')
            ->add('longitude','hidden')
            ->add('cumple', 'date', array('required' => false,'widget' => 'single_text','format' => 'dd-MM-yyyy','required' => true))
            ->add('password', null,array('required' => false,'read_only' => true))
            ->add('busco', 'choice', array('required' => true,'choices'   => UsuarioRepository::getOpcionesSexo() ))
            ->add('para', 'choice', array('required' => true,'choices'   => UsuarioRepository::getOpcionesPara() ))
        ->end()
        ->with('Datos Opcionales')
            ->add('apellido', null)
            ->add('cita_ideal', 'textarea',array('required' => false))
            ->add('frase', 'textarea',array('required' => false))
            ->add('nacionalidad', null,array('required' => false))
            ->add('web', null,array('required' => false))
            ->add('msn', null,array('required' => false))
            ->add('yahoo', null,array('required' => false))
            ->add('facebook', null,array('required' => false))
            ->add('twitter', null,array('required' => false))
            ->add('telefono', null,array('required' => false))
            ->add('musica', null,array('required' => false))
            ->add('peliculas', null,array('required' => false))
            ->add('libros', null,array('required' => false))
            ->add('tele', null,array('required' => false))
            ->add('deportes', null,array('required' => false))
            ->add('comida', null,array('required' => false))
            ->add('trabajo', null,array('required' => false))
            ->add('animales', null,array('required' => false))
            ->add('idioma', null,array('required' => false))
            ->add('buscas', null,array('required' => false))
            ->add('altura', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesAltura() ))
            ->add('estudios', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesEstudios() ))
            ->add('fisico', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesFisico() ))
            ->add('estado_civil', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesEstadoCivil() ))
            ->add('color_pelo', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesColorPelo() ))
            ->add('color_ojos', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesColorOjos() ))
            ->add('vives', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesVives() ))
            ->add('webcam', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesWebcam() ))
            ->add('hijos', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesHijos() ))
            ->add('religion', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesReligion() ))
            ->add('fumas', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesFumas() ))
            ->add('bebes', 'choice', array('required' => false,'empty_value' => false,'choices'   => UsuarioRepository::getOpcionesBebes() ))
            ->add('enabled', null, array('required' => false))
        ->end()
        ;
    }

    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
    {
        $datagridMapper
            ->add('id')
            ->add('nombre')
            ->add('email')
            ->add('enabled')
            ->add('verificado')
        ;
    }

    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('id')
            ->add('imagenes','string',array('template' => 'AmistateBundle:adminGlobal:list_foto.html.twig'))
            ->add('nombre')
            ->add('sexo')
            ->add('enabled')
            ->add('verificado')
            ->add('borrado')
            ->add('descripcion')
            ->add('cumple')
            ->add('pais')
            ->add('provincia')
            ->add('created_at')
        ;
    }

    public function validate(ErrorElement $errorElement, $object)
    {
        /*$errorElement
            ->with('tag')
                ->assertMaxLength(array('limit' => 32))
            ->end()
        ;*/
    }
    
    public function setUserManager($userManager)
    {
        $this->userManager = $userManager;
    }

    /**
     * @return UserManagerInterface
     */
    public function getUserManager()
    {
        return $this->userManager;
    }
    
    public function update($object)
    {
        $this->preUpdate($object);
        $this->getUserManager()->actualizarUser($object);
        $this->postUpdate($object);
    }
}

?>
